/**
 * 
 */
(function($){  
	$.fn.tablaDefecto1 = function(opciones) {  
		for ( var i = 0; i < this.length; i++) {
			var intFuenteTablaDefecto1 = parseInt($("body").css("font-size"));
			var intAnchoMinimoCeldaTablaDefecto1 = 70;
			var objTablaDefecto1 = $(this[i]);
			var arrCabeceraTablaDefecto1 = objTablaDefecto1.children("thead").children("tr").children("th");
			var arrFilaTablaDefecto1 = objTablaDefecto1.children("tbody").children("tr");
			var intChbxPadreSelectTablaDefecto1 = 0;
			var objChbxPadreTablaDefecto1 = null;
			var objFilaTablaDefecto1 = null;
			var objChbxHijoTablaDefecto1 = null;
			/*
	opacity:0.7;        
	filter:alpha(opacity=55);*/
			/* 
			 * Estructura <TH>:
			 * <th>
			 * 		<div class="divTdTablaDefecto1">
			 * 			<span>Texto</span>
			 * 		</div>
			 * 		<div class="divTabTablaDefecto1">
			 * 			<div class="divTabITablaDefecto1"></div>
			 * 		</div>
			 * </th>
			 * Estructura <TD>:
			 * <th>
			 * 		<div class="divTdTablaDefecto1">
			 * 			<span>Texto</span>
			 * 		</div>
			 * </th>
			 */
			
			opciones = $.extend({
				blCss: false,
				chbxPadre: undefined
			}, opciones); 
			
			if(opciones.blCss){
				objTablaDefecto1.addClass("tbTablaDefecto1");
			}
			
			objTablaDefecto1.children("thead").children("tr").children("th").each(function(){
				var objThTablaDefecto1 = $(this);
				var divWrapTablaDefecto1 = "<div class='divTdTablaDefecto1' style='width: " + objThTablaDefecto1.css("width")  + ";'></div>";
				this.onselectstart = function (){
					return false;
				};
				
				// wrap span en th
				objThTablaDefecto1.children("span").wrap(divWrapTablaDefecto1)
				   .css("width", objTablaDefecto1.css("width"))
				   .css("float", "left");

				// wrap span en td
				objTablaDefecto1.children("tbody").children("tr").children("td").each(function(){
					if(objThTablaDefecto1.index()==$(this).index()){
						$(this).children("span").wrap(divWrapTablaDefecto1)
						   .css("width", objTablaDefecto1.css("width"))
						   .css("float", "left")
						   .css("text-align", "left");
					}
				});
			});
			
			for ( var j = 0; j < arrCabeceraTablaDefecto1.length-1; j++) {
				var objThTablaDefecto1 = $(arrCabeceraTablaDefecto1[j]);
				var objTabTablaDefecto1 = $("<div align='center' class='divTabTablaDefecto1 fondoCabeceraTablaDefecto1' ismousedown='no'><div class='divTabITablaDefecto1'></div></div>");
				objThTablaDefecto1.children(".divTdTablaDefecto1").append(objTabTablaDefecto1);
				objTabTablaDefecto1.css("left", (objTabTablaDefecto1.parent().outerWidth() - objTabTablaDefecto1.outerWidth()));
				objTabTablaDefecto1.css("height", objThTablaDefecto1.outerHeight() + "px" );
				
				// actualiza width de .divTdTablaDefecto1 en td 
				objTablaDefecto1.find("tbody").children("tr").children("td").each(function(){
					if(objThTablaDefecto1.index()==$(this).index()){
						$(this).children(".divTdTablaDefecto1").css("width", (parseInt($(this).children(".divTdTablaDefecto1").css("width")) - objTabTablaDefecto1.outerWidth()) + "px");
					}
				});
				
				objTabTablaDefecto1.mousedown(function(){
					var objTabTablaDefecto1 = $(this);
					var objThTablaDefecto1 = objTabTablaDefecto1.parent().parent();
					var objTablaDefecto1 = objTabTablaDefecto1.parent().parent().parent().parent().parent();
					var objTabNuevoTablaDefecto1 = null;
					if(objTabTablaDefecto1.attr("ismousedown")=="no"){
						objTabTablaDefecto1.attr("ismousedown", "si");

						objTabNuevoTablaDefecto1 = $("<div align='center' class='divTabTablaDefecto1'><div class='divTabITablaDefecto1' style='width: 0.3em;'></div></div>");
						objThTablaDefecto1.append(objTabNuevoTablaDefecto1);
						objTabNuevoTablaDefecto1.offset({ top: (objThTablaDefecto1.offset().top), 
							 							  left: (objThTablaDefecto1.offset().left + parseInt(objThTablaDefecto1.css("width")) - objTabNuevoTablaDefecto1.outerWidth()/2)});
						objTabNuevoTablaDefecto1.css("height", objThTablaDefecto1.outerHeight() + "px" );
						// objTabTablaDefecto1.hide();
						
						objTablaDefecto1.bind("mousemove", function(e){
							objTabNuevoTablaDefecto1.offset({left: e.pageX - objTabNuevoTablaDefecto1.outerWidth()/2});
						}).bind("click", function(){
							var intAnchoTotalThTablaDefecto1 = objThTablaDefecto1.offset().left + objThTablaDefecto1.outerWidth();
							var intAumentoThTablaDefecto1 = objTabNuevoTablaDefecto1.offset().left + objTabNuevoTablaDefecto1.outerWidth() - intAnchoTotalThTablaDefecto1;
							var intValorAbsolutoAumentoThTablaDefecto1 = Math.abs(intAumentoThTablaDefecto1);
							var intNuevoAnchoCeldaTablaDefecto1 = 0;
							var intNuevoAnchoCeldaNextTablaDefecto1 = 0;
							if(intAumentoThTablaDefecto1<0){
								intNuevoAnchoCeldaTablaDefecto1 = objThTablaDefecto1.children(".divTdTablaDefecto1").outerWidth()-intValorAbsolutoAumentoThTablaDefecto1;
		 						intNuevoAnchoCeldaNextTablaDefecto1 = objThTablaDefecto1.next("th").children(".divTdTablaDefecto1").outerWidth()+intValorAbsolutoAumentoThTablaDefecto1;
							}else{
								intNuevoAnchoCeldaTablaDefecto1 = objThTablaDefecto1.children(".divTdTablaDefecto1").outerWidth()+intValorAbsolutoAumentoThTablaDefecto1;
								intNuevoAnchoCeldaNextTablaDefecto1 = objThTablaDefecto1.next("th").children(".divTdTablaDefecto1").outerWidth()-intValorAbsolutoAumentoThTablaDefecto1;
							}
							
							if(intNuevoAnchoCeldaTablaDefecto1<intAnchoMinimoCeldaTablaDefecto1){
								intNuevoAnchoCeldaNextTablaDefecto1 -= (intAnchoMinimoCeldaTablaDefecto1-intNuevoAnchoCeldaTablaDefecto1);
								intNuevoAnchoCeldaTablaDefecto1 = intAnchoMinimoCeldaTablaDefecto1;
							}
							if(intNuevoAnchoCeldaNextTablaDefecto1<intAnchoMinimoCeldaTablaDefecto1){
								intNuevoAnchoCeldaTablaDefecto1 -= (intAnchoMinimoCeldaTablaDefecto1-intNuevoAnchoCeldaNextTablaDefecto1);
								intNuevoAnchoCeldaNextTablaDefecto1 = intAnchoMinimoCeldaTablaDefecto1;
							}
							
							objThTablaDefecto1.children(".divTdTablaDefecto1").css("width", intNuevoAnchoCeldaTablaDefecto1 + "px" );
							objThTablaDefecto1.next("th").children(".divTdTablaDefecto1").css("width", intNuevoAnchoCeldaNextTablaDefecto1 + "px" );
							objTablaDefecto1.children("tbody").children("tr").children("td").each(function(){
								if(objThTablaDefecto1.index()==$(this).index()){
									$(this).children(".divTdTablaDefecto1").css("width", intNuevoAnchoCeldaTablaDefecto1 + "px" );
									$(this).next("td").children(".divTdTablaDefecto1").css("width", intNuevoAnchoCeldaNextTablaDefecto1 + "px" );
								}
							});
							
							// remueve listener agregados en table
							$(this).unbind("click");
							$(this).unbind("mousemove");
							
							// remueve .divTabTablaDefecto1 agregado en th
							objTabNuevoTablaDefecto1.remove();
							
							// actualiza .divTabTablaDefecto1 en .divTdTablaDefecto1 en th
							objTabTablaDefecto1.attr("ismousedown", "no");
							// objTabTablaDefecto1.show();
							
							// actualiza width de .divTdTablaDefecto1 en td 
							objTablaDefecto1.children("tbody").children("tr").children("td").each(function(){
								if(objThTablaDefecto1.index()==$(this).index()){
									$(this).children(".divTdTablaDefecto1").css("width", (parseInt($(this).children(".divTdTablaDefecto1").css("width")) - objTabTablaDefecto1.outerWidth()) + "px");
								}
								
							});

							// actualiza left de .divTabTablaDefecto1 en .divTdTablaDefecto1 en th
							objTablaDefecto1.children("thead").children("tr").children("th").children(".divTdTablaDefecto1").children(".divTabTablaDefecto1").each(function(){
								$(this).css("left", ($(this).parent().outerWidth() - $(this).outerWidth()));
							});
						});
					}
				});
			}
			
			if(opciones.chbxPadre!=undefined && opciones.chbxPadre!=null && opciones.chbxPadre.length>0){
				objChbxPadreTablaDefecto1 = $("#" + opciones.chbxPadre);
				objChbxPadreTablaDefecto1.click(function(){
					arrFilaTablaDefecto1.each(function(){
						if(objChbxPadreTablaDefecto1.attr("checked")){
							$(this).addClass("fondoCabeceraTablaDefecto1").css("backgroundColor", "inherit");
							$(this).children(":first-child").find("input:checkbox").attr("checked", true);
						}else{
							$(this).removeClass("fondoCabeceraTablaDefecto1");
							$(this).children(":first-child").find("input:checkbox").attr("checked", false);
						}
					});
				});
				// reseteamos
				objChbxPadreTablaDefecto1.attr("checked", false);
			}
			arrFilaTablaDefecto1.each(function(){
				$(this).children(":first-child").find("input:checkbox").addClass("chbxPadreTablaDefecto1");
				this.onselectstart = function (){
					return false;
				};
				 $(this).mouseover(function(){
				    if(!$(this).hasClass("fondoCabeceraTablaDefecto1")){
				    	$(this).css("backgroundColor", "#fbfbf9");
				    }
				}).mouseout(function(){
				    if(!$(this).hasClass("fondoCabeceraTablaDefecto1")){
				    	$(this).css("backgroundColor", "inherit");
				    }
				}).click(function(e){
					objFilaTablaDefecto1 = $(this);
					arrFilaTablaDefecto1.each(function(){
					objChbxHijoTablaDefecto1 = $(this).children(":first-child").find("input:checkbox");
						if(objFilaTablaDefecto1.attr("id")!=$(this).attr("id")){
							if(!e.ctrlKey){ 
								$(this).removeClass("fondoCabeceraTablaDefecto1");
								objChbxHijoTablaDefecto1.attr("checked", false);
								if(objChbxPadreTablaDefecto1!=null){
									objChbxPadreTablaDefecto1.attr("checked", false);
								}
							}
						}else{
							if(objChbxHijoTablaDefecto1.attr("checked") && e.ctrlKey){
								$(this).removeClass("fondoCabeceraTablaDefecto1");
								objChbxHijoTablaDefecto1.attr("checked", false);
								if(objChbxPadreTablaDefecto1!=null){
									objChbxPadreTablaDefecto1.attr("checked", false);
								}
							}else{
								// se selecciona
								$(this).addClass("fondoCabeceraTablaDefecto1").css("backgroundColor", "inherit");
								objChbxHijoTablaDefecto1.attr("checked", true);
								if(objChbxPadreTablaDefecto1!=null){
									intChbxPadreSelectTablaDefecto1 = 0;
									arrFilaTablaDefecto1.each(function(){
										if($(this).children(":first-child").find("input:checkbox").attr("checked")){
											intChbxPadreSelectTablaDefecto1++;
										}
									});
									if(arrFilaTablaDefecto1.length == intChbxPadreSelectTablaDefecto1){
										objChbxPadreTablaDefecto1.attr("checked", true);
									}
								}
							}
						}
					});
				});
				// reseteamos
				$(this).removeClass("fondoCabeceraTablaDefecto1");
				$(this).children(":first-child").find("input:checkbox").attr("checked", false);
			});

		}
	};  
})(jQuery);
